package com.vca.common.vo;

import com.alibaba.fastjson.JSONArray;
import com.vca.common.response.CourseAboutResponse;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;

/**
 * @author chenbing
 * @date 2022/11/3   17:40
 */
@Data
public class ExhibitionVo {
    @ApiModelProperty(value = "展览主键id")
    private Long id;

    @ApiModelProperty(value = "展览名称")
    private String name;

    @ApiModelProperty(value = "展览开始日期")
    private String startTime;

    @ApiModelProperty(value = "展览结束日期")
    private String endTime;

    @ApiModelProperty(value = "是否付费  0=免费  1=付费")
    private Integer isPay;

    @ApiModelProperty(value = "展览价格")
    private BigDecimal price;

    @ApiModelProperty(value = "展览简介")
    private String introduction;

    @ApiModelProperty(value = "官网链接")
    private String link;

    @ApiModelProperty(value = "视频号ID")
    private String channelsId;

    @ApiModelProperty(value = "视频id")
    private String videoId;

    @ApiModelProperty(value = "展览城市名称")
    private String cityName;

    @ApiModelProperty(value = "展览地址")
    private HashMap<String, Object> address;

    @ApiModelProperty(value = "展览封面图")
    private String cover;

    @ApiModelProperty(value = "展览轮播图")
    private JSONArray carouselMap;

    @ApiModelProperty(value = "主图视频")
    private String mainPictureVideo;

    @ApiModelProperty(value = "分享海报")
    private String sharePoster;

    @ApiModelProperty(value = "开展状态 0=已结束 1=进行中 2=未开始")
    private Integer appointmentStatus;

    @ApiModelProperty(value = "展览日期")
    private String schedulingDate;

    @ApiModelProperty(value = "展览当天开始时间")
    private String schedulingStartTime;

    @ApiModelProperty(value = "展览当天结束时间")
    private String schedulingEndTime;

    @ApiModelProperty(value = "当前展览所剩席位")
    private Integer schedulingSeatCount;

    @ApiModelProperty(value = "展览详情")
    private ExhibitionInfoVo exhibitionInfo;

    @ApiModelProperty(value = "当前所排的所有展览")
    private List<Sechduling> schedulingList;

    @ApiModelProperty(value = "相关课程 推荐")
    private List<CourseAboutResponse> eventRecommendations;

    @ApiModelProperty(value = "你可能喜欢的商品 推荐")
    private List<CourseAboutResponse> shopRecommendations;

    @ApiModelProperty(value = "相关出版物推荐")
    private List<CourseAboutResponse> publicationRecommendations;

    @ApiModelProperty(value = "是否收藏 false=未收藏 true=已收藏")
    private Boolean isCollection = false;

    @ApiModelProperty(value = "状态 false=Inactive true=active")
    private Boolean status = true;

    @ApiModelProperty(value = "是否删除 0=未删除 1=已删除")
    private Integer isDeleted = 0;

    @ApiModelProperty(value = "用户是否预约过当前展览 true=Reserved false=No appointment")
    private Boolean isAppointment = false;

    @ApiModelProperty(value = "待核销订单数量")
    private Integer orderQuantityToBeWrittenOff = 0;

    @ApiModelProperty(value = "已完成订单数量")
    private Integer completedOrderQuantity = 0;

//    @ApiModelProperty(value = "待评价订单数量")
//    private Integer quantityOfOrdersToBeEvaluated = 0;

    @ApiModelProperty(value = "课程/套课所有排期总共所剩的席位")
    private Integer totalSeatsLeftForAllScheduledExhibition = 0;

    @Data
    public static class Sechduling{
        @ApiModelProperty(value = "展览开始日期")
        private String date;

        @ApiModelProperty(value = "当前日期展览排期集合")
        private List<TimeSlots> timeSlots;

        @Data
        public static class TimeSlots{
            @ApiModelProperty(value = "排期ID")
            private Long sechdulingId;

            @ApiModelProperty(value = "开始时间")
            private String timeStart;

            @ApiModelProperty(value = "结束时间")
            private String timeEnd;

            @ApiModelProperty(value = "价格")
            private BigDecimal price;

            @ApiModelProperty(value = "剩余席位")
            private Integer remainingSeatCount;

            @ApiModelProperty(value = "展览排期状态 0=已结束 1=进行中 2=未开始")
            private Integer schedulingStatus;

            @ApiModelProperty(value = "预约状态 true=Reservable false=Non bookable")
            private Boolean status = true;

            @ApiModelProperty(value = "是否预约过 true=Reserved false=No appointment")
            private Boolean isAppointment=false;

            @ApiModelProperty(value = "当前排期预约是否已截止 true=可以预约 false=不可预约")
            private Boolean isStopAppointment = true;

            @ApiModelProperty(value = "是否删除")
            private Boolean isDel;
        }

    }
}
